﻿/**
 //*code is far away from bug with the animal protecting
 //*  ┏┓　　　┏┓
 //*┏┛┻━━━┛┻┓
 //*┃　　　　　　　┃ 　
 //*┃　　　━　　　┃
 //*┃　┳┛　┗┳　┃
 //*┃　　　　　　　┃
 //*┃　　　┻　　　┃
 //*┃　　　　　　　┃
 //*┗━┓　　　┏━┛
 //*　　┃　　　┃神兽保佑
 //*　　┃　　　┃代码无BUG！
 //*　　┃　　　┗━━━┓
 //*　　┃　　　　　　　┣┓
 //*　　┃　　　　　　　┏┛
 //*　　┗┓┓┏━┳┓┏┛
 //*　　　┃┫┫　┃┫┫
 //*　　　┗┻┛　┗┻┛
 //*　　
 //*  
 //*   ---------------------------------
 //*      @author (shang)
 //*      @since  2021/02/03 17:30:25
 */
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace JWTMiddre.Filter
{
    public class ApiAuthorizeAttribute : Attribute, IAuthorizationFilter
    {

        public void OnAuthorization(AuthorizationFilterContext context)
        {
            var user = context.HttpContext.Items["User"];
            //验证是否需要授权和授权信息
            if (HasAllowAnonymous(context) == false && user == null)
            {
                // not logged in
                context.Result = new JsonResult(new { message = "Unauthorized" })
                { StatusCode = StatusCodes.Status401Unauthorized };
            }
        }

        private static bool HasAllowAnonymous(AuthorizationFilterContext context)
        {
            var result = false;
            var url = context.HttpContext.Request.Path.ToString();
            if(url== "/Home/GetToken")
            {

                return true;
            }
            result = true;
            return result;
        }
    }
}

